home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / lib / startup_muiloc.ass < prev    next >
Encoding:
Text File  |  2002-10-28  |  3.8 KB  |  129 lines

  1. START   movem.l d0/a0,-(a7)     ;save initial values
  2.         movea.l $4.w,a6
  3.         suba.l  a1,a1
  4.         jsr     (-294,a6)               ; FindTask()
  5.         move.l  d0,a4
  6.         tst.l   (172,a4)                ; process.cli
  7.         beq.s   workbench
  8.         movem.l (a7)+,d0/a0     ;restore regs
  9.         bra.s   cli             ;and run the user prog
  10. workbench       lea     (92,a4),a0      ; process.msgport
  11.         jsr     (-384,a6)               ;wait for a message (WaitPort(())
  12.         lea     (92,a4),a0      ; process.msgport
  13.         jsr     (-372,a6)               ;then get it (GetMsg())
  14.         move.l  d0,_wbmessage           ;save it for later reply
  15.         movem.l (a7)+,d0/a0     ;restore
  16. cli     bsr.s   _START          ;call our program
  17.         move.l  d0,-(a7)                ;save it
  18.         tst.l   _wbmessage
  19.         beq.s   exittodos               ;if I was a CLI
  20.         jsr     (-132,a6)               ; Forbid()
  21.         move.l  (_wbmessage,pc),a1
  22.         jsr     (-138,a6)               ; Permit()
  23. exittodos       move.l  (a7)+,d0                ;exit code
  24.         rts
  25.  
  26. _START  move.l  a0,_arg
  27.         clr.b   (-1,a0,d0.w)
  28.  
  29.         movea.l $4.w,a6
  30.         lea     (DOSName,pc),a1
  31.         moveq   #39,d0
  32.         jsr     (-552,a6)               ; OpenLibrary()
  33.         move.l  d0,_DOSBase
  34.         beq.s   .FINISH
  35.  
  36.         movea.l d0,a6
  37.         jsr     (-60,a6)                ; Output()
  38.         move.l  d0,_stdout
  39.         jsr     (-54,a6)                ; Input()
  40.         move.l  d0,_stdin
  41.  
  42.         movea.l $4.w,a6
  43.         lea     (IntName,pc),a1
  44.         moveq   #39,d0
  45.         jsr     (-552,a6)               ; OpenLibrary()
  46.         move.l  d0,_IntuitionBase
  47.         beq.s   .CLOSEDOS
  48.  
  49.         movea.l $4.w,a6
  50.         lea     (GfxName,pc),a1
  51.         moveq   #39,d0
  52.         jsr     (-552,a6)               ; OpenLibrary()
  53.         move.l  d0,_GfxBase
  54.         beq.s   .CLOSEINT
  55.  
  56.         movea.l $4.w,a6
  57.         lea     (MUIName,pc),a1
  58.         moveq   #19,d0
  59.         jsr     (-552,a6)
  60.         move.l  d0,_MUIMasterBase
  61.         beq.s   .CLOSEGFX
  62.  
  63.         movea.l $4.w,a6
  64.         lea     (LocName,pc),a1
  65.         moveq   #38,d0
  66.         jsr     (-552,a6)
  67.         move.l  d0,_LocaleBase
  68.         beq.s   .CLOSEMUI
  69.  
  70.         movea.l $4.w,a6
  71.         lea     (AslName,pc),a1
  72.         moveq   #39,d0
  73.         jsr     (-552,a6)
  74.         move.l  d0,_ASLBase
  75.         beq.s   .CLOSELOC
  76.  
  77.         xref    _main
  78.         jsr     _main           ; a6 is stored
  79.         move.l  d0,d2
  80.  
  81.         movea.l _ASLBase,a1
  82.         jsr     (-414,a6)
  83. .CLOSELOC
  84.         movea.l _LocaleBase,a1
  85.         jsr     (-414,a6)
  86. .CLOSEMUI
  87.         movea.l _MUIMasterBase,a1
  88.         jsr     (-414,a6)               ; CloseLibrary()
  89. .CLOSEGFX
  90.         movea.l _GfxBase,a1
  91.         jsr     (-414,a6)               ; CloseLibrary()
  92. .CLOSEINT
  93.         movea.l _IntuitionBase,a1
  94.         jsr     (-414,a6)               ; CloseLibrary()
  95. .CLOSEDOS
  96.         movea.l _DOSBase,a1
  97.         jsr     (-414,a6)               ; CloseLibrary()
  98. .FINISH move.l  d2,d0
  99.         rts
  100. ****************************************
  101.         xdef    _DOSBase
  102.         xdef    _IntuitionBase
  103.         xdef    _GfxBase
  104.         xdef    _MUIMasterBase
  105.         xdef    _LocaleBase
  106.         xdef    _ASLBase
  107.         xdef    _arg
  108.         xdef    _stdout
  109.         xdef    _stdin
  110.         xdef    _wbmessage
  111. ****************************************
  112. _DOSBase        dc.l    0
  113. _IntuitionBase  dc.l    0
  114. _GfxBase        dc.l    0
  115. _MUIMasterBase  dc.l    0
  116. _LocaleBase     dc.l    0
  117. _ASLBase        dc.l    0
  118. _arg            dc.l    0
  119. _stdout         dc.l    0
  120. _stdin          dc.l    0
  121. _wbmessage      dc.l    0
  122. ****************************************
  123. DOSName dc.b    'dos.library',0
  124. IntName dc.b    'intuition.library',0
  125. GfxName dc.b    'graphics.library',0
  126. MUIName dc.b    'muimaster.library',0
  127. LocName dc.b    'locale.library',0
  128. AslName dc.b    'asl.library',0
  129.